package com.zhfj.dao.base;

import org.hibernate.Query;

import java.io.Serializable;
import java.util.List;

/**
 * Created on 2017/12/1.
 * BaseDao 定义DAO层的基本操作
 * @author Jie
 */
public interface BaseDao<T> {

    /**
     * 保存更新操作
     * @param entity
     */
    void save(T entity);


    /**
     * 更新操作
     * @param entity
     */
    void update(T entity);

    /**
     * 删除操作
     * @param id
     */
    void delete(Serializable id);


    /**
     * 根据id查找操作
     * @param id
     * @return
     */
    T findById(Serializable id);


    /**
     * 根据HQL语句查询操作,返回Query
     * @param hql   HQL语句
     * @param params  可变参数
     * @return  返回query方便进行分页处理
     */
    Query findByHQLReturnQuery(String hql, Object... params);

    /**
     * 根据HQL语句查询操作,返回Query
     * @param hql   HQL语句
     * @param params  可变参数
     * @return  返回query方便进行分页处理
     */
    List<T> findByHQLReturnList(String hql, Object... params);

}
